package com.hub.service;

import com.hub.dto.PageParam;
import com.hub.dto.auth.CreateUserParam;
import com.hub.dto.auth.UserRoleParam;
import com.hub.entity.AuthUserInfo;
import com.hub.utils.ApiResultObject;

/**
 * <p>
 *  用户信息服务类
 * </p>
 *
 * @author hub
 * @since 2020-05-13
 */
public interface IAuthUserInfoService extends IBaseService<AuthUserInfo> {

    /**
     * 分页查询user列表
     * @param pageParam
     * @return
     */
    ApiResultObject getList(PageParam<AuthUserInfo> pageParam);

    /**
     * 获取用户详情
     * @param id
     * @return
     */
    ApiResultObject getUserDetail(Long id);

    /**
     * 获取用户角色
     * @param param
     * @return
     */
    ApiResultObject getUserRole(UserRoleParam param);

    /**
     * 根据id更新
     * @param id
     * @param param
     * @return
     */
    ApiResultObject updateUser(Long id, CreateUserParam param);

    /**
     * 更新用户角色信息
     * @param param
     * @return
     */
    ApiResultObject updateUserRole(UserRoleParam param);

    /**
     * 创建用户
     * @param param
     * @return
     */
    ApiResultObject createUser(CreateUserParam param);

    /**
     * 删除用户
     * @param id
     * @return
     */
    ApiResultObject delete(Long id);

    /**
     * 登录
     * @param account
     * @param password
     * @return
     */
    ApiResultObject login(String account, String password) throws Exception;

    /**
     * 根据用户名称查询相关用户
     * @param username
     * @return
     */
    AuthUserInfo findUserInfoByAccount(String username);

    /**
     * 获取用户菜单权限
     * @return
     */
    ApiResultObject loadMenuInfo();

    /**
     * 退出登录
     * @return
     */
    ApiResultObject logout();
}
